Video surveillance systems are used in a variety of applications to detect and monitor objects within an environment. In security applications, for example, such systems are sometimes employed to detect and track individuals or vehicles entering or leaving a building facility or security gate, or to monitor individuals within a store, office building, hospital, or other such setting where the health and/or safety of the occupants may be of concern. In the aviation industry, for example, such systems have been used to detect the presence of individuals at key locations within an airport such as at a security gate or parking garage.
Many traditional surveillance systems are monitored using closed-circuit television (CCTV) cameras, which require the use of human interaction to observe, analyze, and recognize particular activities and/or events. In certain security applications, for example, a number of CCTV monitors can be configured to receive real-time video images from one or more video cameras within the system, which can then be viewed by security personnel to detect the occurrence of a security breach or other such event. While such surveillance systems are commonplace, they are typically prone to human error and are ineffectual in those applications where the detection of events by the naked eye is difficult or unfeasible.
More sophisticated surveillance systems in the art typically rely on the use of computer vision algorithms (e.g. special software programs) to monitor activity detected by the various cameras, sensors, and other components within the system. Such software programs usually include an event library of pre-programmed algorithms or routines that, when implemented, can be used to detect the occurrence of events within a space. In certain systems, the software program can also permit the monitoring of activity at other various ranges of the electromagnetic spectrum outside of the visible spectrum.
In certain applications, it may be desirable to provide additional algorithmic functionality to the software program to permit the detection and monitoring of new events not contained in the existing event library. To accomplish this task, many existing systems require the user to custom code the new event manually into the software program using a programming language such as C++, Visual Basic, or Java. Such technique typically requires the user to have an extensive knowledge of computer programming and software coding as well as an understanding of the various surveillance components (e.g. cameras, sensors, etc.) within the surveillance system. In some cases, the programming of new events may require the user to re-code the entire software program, increasing the time and expense necessary to upgrade the system. Because such software programs lack an automated means to define and add new events within the system, many surveillance systems are often limited to detecting those events already programmed within their event library.